﻿#pragma once

#include<bits/stdc++.h>
using namespace std;

typedef int BTDataType;

typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

// 前序遍历  
void PerOrder(BTNode* root);
//  中序遍历
void InOrder(BTNode* root);
//  后序遍历
void PostOrder(BTNode* root);
//  二叉树节点个数  
int BinaryTreeSize(BTNode* root);
//  二叉树叶子结点个数
int BinaryTreeLeafSize(BTNode* root);
// ⼆叉树第k层结点个数
int BinaryTreeLevelKSize(BTNode* root, int k);
// 二叉树的深度/高度  
int BinaryTreeDepth(BTNode* root);
// ⼆叉树查找值为x的结点
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
// 二叉树的销毁  
void BinaryTreeDestory(BTNode** root);